
namespace SharpTalk.Core.Diagnostic
{
    using System;
    using System.Diagnostics;
    using System.Reflection;

    public interface ITraceProvider
    {
        void SetSourceLevel(SourceLevels level);
        void TraceError(string message);
        void TraceError(string format, params object[] args);
        void TraceException(MethodBase method, Exception exception);
        void TraceException(MethodBase method, Exception exception, bool includeStack);
        void TraceInfo(string message);
        void TraceInfo(string format, params object[] args);
        void TraceDebug(string message);
        void TraceDebug(string format, params object[] args);
        void TraceMethodCall(MethodBase method);
        void TraceEvent(TraceEventType type, string message);
        void TraceEvent(TraceEventType type, string format, params object[] args);
        bool ShouldTrace(TraceEventType type);
    }
}